package com.huang.A02_case_exercise;

import java.util.Random;

/**
 目标
 使用String开发验证码
 需求：实现随机产生验证码，验证码的每位可能是数字、大写字母、小写字母
 */
public class Demo2 {
    public static void main(String[] args) {
        //4.主程序中，调用该方法即可得到随机验证码了
        System.out.println(createCode(4));
        System.out.println(createCode(6));
    }

    /**
     * 1.设计一个方法，该方法接收一个整型变量，最终要返回对应位数的随机验证码
     * @param n
     * @return
     */
    public static String createCode(int n) {
        //2.方法内定义两个变量：一个用来记录生成的验证码，
        // 一个用来记住要用到的全部字符
        String code = "";
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        //3.定义for循环控制生成多少位随机字符，每次得到一个字符范围内的随机索引
        //根据索引提取该字符，把字符交给code变量连接起来，循环结束后
        //在循环外返回code即可

        //获得一个随机数对象，用于获取随机索引
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            //调用Random里面的方法生成随机索引
            //参数包前不包后
            //调用String里面length()方法，获取字符串的长度返回（就是字符个数）
            int index = r.nextInt(data.length());
            //根据索引在data中提取该字符
            //调用String里面的charAt(int index)方法，获取某个索引位置处的字符返回
            //把字符交给code变量连接起来
            code += data.charAt(index);//等价于 code = code + data.charAt(index)
        }
        //将生成的随机验证码返回
        return code;
    }
}